package com.elitel.frame.main.dao.ext;

import java.util.List;

import com.elitel.frame.main.entity.CfgField;
import org.apache.ibatis.annotations.Param;

/**
 * @Description 扩展字段配置mapper
 * @author guoyanfei
 */
public interface ExtCfgFieldMapper {
	/**
     * @Description 查询所有表字段信息
     * @param 表标识
     * @return List<CfgDb>
     * @author guoyanfei
     */
	List<CfgField> getAllFieldList(String dtConfigId);
	
	/**
     * @Description 通过表标识查询最大排序序号
     * @param 表标识
     * @return 最大排序序号
     * @author guoyanfei
     */
	Integer getMaxdfOrder(String dtConfigId);
	
	/**
     * @Description 通过表标识查询最大排序序号
     * @param 表标识
     * @return 字段配置集合
     * @author guoyanfei
     */
	List<CfgField> selectFieldByConfig(String dtConfigId);
	
	/**
     * @Desciption 批量删除数据
     * @param 
     * @author guoyanfei
     */
	void deleteBatchByGuid(List<String> guids);
	
	/**
     * @Desciption 通过数据库主键和表名称查询该表字段信息
     * @param dbkey(数据库主键),tablename(表名称)
     * @return 字段配置集合
     * @author guoyanfei
     */
	List<CfgField> selectFieldBydbkeyAndtable(@Param("dbkey") String dbkey, @Param("tablename") String tablename);
	
	/**
     * @Desciption 通过表标识删除该表的字段信息
     * @param dtconfigid(表标识)
     * @return Integer(删除结果)
     * @author guoyanfei
     */
	Integer deleteFieldBydtconfigid(String dtconfigid);
	
	/**
     * @Desciption 通过表标识查询在其他配置表中不存在的字段信息
     * @param dtconfigid(表标识)
     * @return List<CfgField>集合
     * @author guoyanfei
     */
	List<CfgField> selectFieldNotInFieldConfig(String dtconfigid);
	
	/**
	 * @description 通过表标识和字段名称查询字段信息
	 * @param dtConfigId(表标识)
	 * @param fieldname(字段名称)
	 * @return CfgField实体
	 * @author guoyanfei
	 * @date 2017/11/30
	 */
	CfgField selectFieldInfo(@Param("dtConfigId") String dtConfigId, @Param("fieldname") String fieldname);

	/**
	 * show 通过表标识查询字段类型为String的字段信息
	 * by date 2018/03/13
	 * @param dtConfigId 表标识
	 * @return CfgField实体list集合
	 * @author guoyanfei
	 */
	List<CfgField> selectFieldTypeString(String dtConfigId);

	/**
	 * show 通过表标识查询该表主键字段信息(可能有多个主键)
	 * created by date 2018/03/14
	 * @param dtConfigId 表标识
	 * @return CfgField实体list集合
	 * @author guoyanfei
	 */
	List<CfgField> selectPrimaryKeybydtconfigId(String dtConfigId);
	
}
